home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / CUGUK / UTIL_SRC / C126.ZIP / LEX.ZIP / LEX.H < prev    next >
Text File  |  1990-01-19  |  2KB  |  68 lines

  1. /* LEX.H
  2.  *
  3.  * lex library header file -- accessed through
  4.  *    #include "lex.h"
  5.  *
  6.  * Bob Denny 28-Aug-82    Remove reference to FILE *lexin to
  7.  *            eliminate dependency on standard I/O library. Only
  8.  *            lexgetc() used it, and it's there now.
  9.  *            Add EOF definition for standalone uses.
  10.  *            Corrected comment for llnxtmax.
  11.  *
  12.  * Scott Guthery 20-Nov-83    Adapt for IBM PC & DeSmet C.  Removed
  13.  *                equivalence of yylval and lexval since
  14.  *                a multi-typed parser wants yylval to be
  15.  *                typed to be the union of the types (YYSTYPE).
  16.  */
  17.  
  18. /*
  19.  * Description of scanning tables. The entries at the front of
  20.  * the struct must remain in place for the assembler routines to find.
  21.  */
  22. struct    lextab {
  23.     int    llendst;        /* Last state number        */
  24.     char    *lldefault;        /* Default state table        */
  25.     char    *llnext;        /* Next state table        */
  26.     char    *llcheck;        /* Check table            */
  27.     int    *llbase;        /* Base table            */
  28.     int    llnxtmax;        /* Last in next table        */
  29.     int    (*llmove)();        /* Move between states        */
  30.     int    *llfinal;        /* Final state descriptions    */
  31.     int    (*llactr)();        /* Action routine        */
  32.     int    *lllook;        /* Look ahead vector if != NULL */
  33.     char    *llign;         /* Ignore char vec if != NULL    */
  34.     char    *llbrk;         /* Break char vec if != NULL    */
  35.     char    *llill;         /* Illegal char vec if != NULL    */
  36. };
  37.  
  38. #define NBPW         16
  39. #define LEXERR        256
  40. #define LEXSKIP     (-1)
  41. #define EOF        (-1)
  42. #define LEXECHO(fp) {lexecho((fp));}
  43.  
  44. #define lextext llbuf
  45. #define lexlast llend
  46.  
  47. struct _iobuf *lexin;
  48.  
  49. /*global*/  void comment(char *);
  50. /*global*/  int gettoken(char *,int );
  51. /*global*/  long integ(char *,int );
  52. /*global*/  int lexchar(void);
  53. /*global*/  void lexecho(struct _iobuf * );
  54. /*global*/  int lexlength(void);
  55. /*global*/  int _lmovi(struct lextab *,int ,int );
  56. /*global*/  int _lmovb(struct lextab *,int ,int );
  57. /*global*/  int lexpeekc(void);
  58. /*global*/  struct lextab *lexswitch(struct lextab *);
  59. /*global*/  int mapch(int ,int );
  60. /*global*/  char *token(char * *);
  61. /*global*/  int tst__b(int ,char *);
  62. /*global*/  int yylex(void);
  63. /*global*/  int llinp(void);
  64. /*global*/  int llset(void);
  65. /*global*/  void llinit(void);
  66. /*global*/  void lexerror(char *,... );
  67. /*global*/  int lexgetc(void);
  68.